<?php
// 永不超时     用命令行  因为apache  nginx 自带超时
set_time_limit(0);
// __DIR__ 表示文件所在目录
include __DIR__ . '/function.php';
require __DIR__ . '/vendor/autoload.php';

use QL\QueryList;

$db = new PDO('mysql:host=localhost;dbname=zufang;charset=utf8mb4', 'root', 'root');
// url地址
for ($i = 1; $i <= 4; $i++) {
    $url = 'https://news.ke.com/cq/baike/0045/pg' . $i . '/';

// html
    $html = http_request($url);

// lj-lazy
    $datalist = QueryList::Query($html, [
        'pic'        => ['.lj-lazy', 'data-original', '', function ($item) {
            // 得到扩展名
            $ext = pathinfo($item, PATHINFO_EXTENSION);
            // 生成文件名
            $filename = md5($item) . rand(10000, 99999) . '_' . time() . '.' . $ext;
            // 生成本地路径
            $filepath = dirname(__DIR__) . '/public/uploads/article/images/' . $filename;
            // 保存文件
            file_put_contents($filepath, http_request($item));
            // 返回html 页面所需的文件路径---保存在数据库中
            return '/uploads/article/images/' . $filename;
        }],
        'title'      => ['.text .LOGCLICK', 'text'],
        'url'        => ['.text .LOGCLICK', 'href'],
        'desn'       => ['.text .summary', 'text'],
        'created_at' => ['.info .time', 'text'],
    ])->data;

    foreach ($datalist as $item) {
        // extract 函数 将数组才开为一个一个的
        extract($item);
        $spl  = "insert into zfw_articles (title,pic,desn,url,created_at) values(?,?,?,?,?)";
        $stmt = $db->prepare($spl);
        // 入库
        $stmt->execute([$title, $pic, $desn, $url, $created_at]);
    }
}

